package fachklassen.entities;

import java.util.ArrayList;
import java.util.List;

import fachklassen.controls.Kundenverwaltung;
import fachklassen.controls.Produktverwaltung;

public class Bestellung {
	
	private int bstnr;
	private static int bstzaehler=0;
	private Kunde kunde;
	private List<Bestellposten> posten;
	
	public Bestellung(int knr, Kundenverwaltung kv){
		this.bstnr=++bstzaehler;
		this.kunde= kv.gibKunde(knr);
		this.posten= new ArrayList<Bestellposten>();
	}	
	
	//======================== neuer Code =============================
	public void ergaenzen(int prodNr, int anzahl, Produktverwaltung prodverwaltung) {
		for (Bestellposten bestellposten:posten) {
			if (bestellposten.getProdnr() == prodNr) {	//Wenn Produkt schon bestellt wurde
				this.aendern(prodNr, anzahl);			//nur die Anzahl aendern
				return;
			}
		}
		//sonst neuen Bestellposten anlegen 
		posten.add(new Bestellposten(prodNr, anzahl, prodverwaltung));
		
	}
	
	public void aendern(int prodNr, int anzahl) {
		for (Bestellposten bestellposten:posten) {
			if (bestellposten.getProdnr() == prodNr)
				bestellposten.setAnzahl(anzahl);
		}
	}
	
	public void loeschen(int prodNr) {
		for (int i=0; i<posten.size(); i++) {
			if (posten.get(i).getProdnr() == prodNr)
				posten.remove(i);
		}
	}
	
	public int preisBerechnen() {
		int preis = 0;
		
		for (Bestellposten bestellposten:posten)
			preis += bestellposten.gibVerkaufspreis();
		
		return preis;
	}

	public int gibAnzahlProdukt(int prodNr) {
		int anzahl = 0;
		
		for (Bestellposten bestellposten:posten) {
			if (bestellposten.getProdnr() == prodNr)
				anzahl += bestellposten.getAnzahl();
		}
		
		return anzahl;
	}
	
	public int getBstnr() {
		return bstnr;
	}
	//==================================================================
	
	public int gibKundennummer() {
		return kunde.getKnr();
	}
	
	@Override
	public String toString(){
		StringBuffer sb= new StringBuffer();
		sb.append("Bestellung "+bstnr+": Kunde "+kunde+"\n");
		for (Bestellposten p:posten){
			sb.append(p.toString());
			sb.append("\n");
		}
		return sb.toString();
	}
}
